   //匿名函数自调用，匿名函数有一个实参，二个形参，可以解决数据污染问题
   //但是数据外面的用不了，可以赋值给window对象外部使用
   ;
   (function(window, undefined) { //第一个形参---解决作用域查找问题，可以压缩体积
       //第二个形参---避免ie6，7，8出现undefined
       function init(el) {
           //获取所有的数据
           let els = document.querySelectorAll(el)
               //遍历数据，讲js dom绑定在jq对象上
           for (let i = 0; i < els.length; i++) {
               //i 索引
               //els[i]获取js标签对象 
               this[i] = els[i]
           }
           this.length = els.length
       }
       let jQuery = function(el) {
           return new init(el)
       }

       //给jq增加一个快捷操作，也就是静态方法，改静态方法可以给init添加原型方法
       jQuery.extend = function(object) {
           for (let key in object) {
               init.prototype[key] = object[key]
           }
       }
       init.prototype = {
           css(cssAttr, cssVal) {
               for (let i = 0; i < this.length; i++) {
                   this[i].style[cssAttr] = cssVal
               }
               return this
           },
           ajax(options) {},
           attr(options) {},
           addClass(options) {},
       }
       window.jQuery = window.$ = jQuery
   })(window)
   $.extend({
       bg() {

       }
   })